

from test_report.HTMLTestRunner import HTMLTestRunner
from email.mime.text import MIMEText
from email.header import Header
import smtplib
import unittest
import os
import time


reportPath = os.path.dirname(os.path.abspath('.')) + '/test_report/'
reportPath = os.path.dirname(os.path.abspath('.')) + '/test_report/'


# 发送邮件
def sendReport(file_new):
    # 以只读的方式打开文件，取别名为f
    with open(file_new, "rb") as f:
        # 读取文件内容，存放到mai_body中
        mail_body = f.read()

    to = ['3257514465@qq.com']  # 收件人邮箱地址
    content = MIMEText('你好，我是圣洁不吃冰淇淋🍦')  # 正文内容
    content['Subject'] = '漂流瓶'  # 邮件标题
    content['From'] = "wwb199905@163.com"  # 发件人
    content['To'] = ','.join(to)  # 收件人，用逗号连接多个邮件，实现群发

    # msg = MIMEText('你好，我是圣洁不吃冰淇淋🍦', "html", "utf-8")
    # msg["Subject"] = Header("自动化测试报告", 'utf-8')
    # msg["From"] = "1970023703@qq.com"
    # msg["To"] = "3257514465@qq.com"
    smtp = smtplib.SMTP_SSL('smtp.163.com', 465)
    smtp.login("wwb199905@163.com", "ROADTQSYHLVGKCLD")
    smtp.sendmail("wwb199905@163.com", to, content.as_string())
    smtp.quit()

# 查找测试报告目录，找到最新的测试报告文件，把最新的测试报告文件作为邮件发送内容
def newReport(testReport):
    # 返回测试报告所在目录下所有的文件夹
    dirs = os.listdir(testReport)
    dirs.sort()
    file_new = os.path.join(testReport, dirs[0])
    print('The new report name: {0}'.format(file_new))
    return file_new  # 返回的是测试报告的名字

if __name__ == "__main__":
    # 测试用例所在目录
    test_dir = os.path.dirname(os.path.abspath('.')) + '/testsuits/'
    test_report = os.path.dirname(os.path.abspath('.')) + '/test_report/'

    # 加载测试用例所在目录下的bing.py测试用例文件
    discover = unittest.defaultTestLoader.discover(test_dir, pattern="baidu.py")
    # 获取当前时间
    now = time.strftime("%Y-%m-%d %H%M%S")
    # 测试报告名,测试结果路径+时间+result.html
    filename = test_report + '\\' + now + 'result.html'
    # 以只读的方式打开测试报告
    fp = open(filename, "wb")
    runner = HTMLTestRunner(stream=fp, title="测试报告", description="测试用例执行情况")
    # 执行测试用例，测试用例在discover中加载
    runner.run(discover)
    fp.close()

    # 拿到最新的测试报告
    new_report = newReport(test_report)
    # 发送邮件
    sendReport(new_report)
    print("success")